home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1996 #5 / Amiga Plus CD - 1996 - No. 5.iso / pd / tools / menublaster / menublaster.doc < prev    next >
Text File  |  1994-01-01  |  11KB  |  264 lines

  1.  
  2.             MENUBLASTER 'documents'
  3.  
  4.  
  5. Note: MB stands in this text for MenuBlaster, MM for MenuMaster.
  6.  
  7. MB is FREELY DISTRIBUTABLE, as long as it's intact and docs follow the
  8. program.
  9.  
  10.  
  11. WHOTHEH*LL & WHYTHEH*LL?
  12.  
  13. This program is written 100% Assembler by me, 'The Only and LAME.... Archy!'
  14. to replace MenuMaster © C. Papademetrious, because MM:s window didn't
  15. look good in 2.0. Well, whatta are you excpecting for using PrintIText/eqv.
  16. onto window title bar....
  17. Besides, I got some new ideas for a program like these ones. Quit and Update
  18. should've been internal in MM. Now user has to insert them into
  19. configfile. Relative free memory and free disk space displays are
  20. useful when debugging programs. Set relative mem on, start your own program,
  21. quit it, and you see memory/disk losses right away.
  22.  
  23. This (kind of) program(s) have one BIG advantage compared to e.g. Workbench:
  24. Start e.g. sys:tools/commodities/exchange with WB. Then, start it from
  25. MB menu (not existing now, this is just an example). Which way is
  26. easier and faster. MB scores, I think.
  27. Yea, yea, there's the World's Greatest ToolManager around. Couple of
  28. things into WB:s Tools menu and.... No good. At least I have over 80
  29. things in MB menus. Try to push 80 things into only one menu..... they need
  30. the whole strip.
  31. How about docks? They're too big, some window is always over them....
  32. No good. Besides, 80 things won't fit into docks anyway. Or maybe they fit,
  33. but they would use half of WB screen....
  34.  
  35. I'm... satisfied to MB. I don't know what you're using, and
  36. I'm not pressuring (I hope). Things you just read, were only cold facts.
  37.  
  38. USAGE
  39.  
  40. You're reading these docs, so, you've started the program. It probably
  41. yelled 'Can't open config file!'. That's because you don't have the config
  42. file in S: yet. Create config and choose 'Update' from internal menu.
  43. NB: From now on, in this text 'internal menu' means that '?' menu
  44. in the left edge of the menubar of MB window. 'User menus' are
  45. those other, configurable menus.
  46. So, usage is
  47. MenuBlaster [configfile]
  48. If no configfile name is given, config will be read from S:MB.config.
  49.  
  50. Then, I think, we have to dicuss about that mentioned config file.
  51. Start a text editor and edit a file just like this (or just grab
  52. this piece here):
  53.  
  54. DISK DH0:
  55. ;if line starts with semicolon, it will be ignored
  56. HOTKEY RSHIFT!RALT
  57. DRAG
  58.  
  59. MENU "Project"
  60. ITEM "NewCLI"        | c:newcli            |n
  61. ITEM "Preferences"
  62. SUBI "Palette"        | sys:prefs/palette
  63. SUBI "Pointer"        | sys:prefs/pointer
  64.  
  65. MENU "Music"
  66. ITEM "MultiPlayer"    | sys:music/multiplayer        |m
  67. ITEM "Audition 4 demo"    | sys:music/audition4_demo    |a
  68.  
  69. MENU "Games"
  70. ITEM "MiniPac"        | sys:games/MiniPac        |p
  71. ITEM "Tank You"        | sys:games/TankYou
  72. ENDE
  73.  
  74.  
  75.  
  76. Done? Save it as S:MB.config. Then get a CLI and start MB, or
  77. activate MB window and select 'Update' from internal menu.
  78. Wow! If no requesters popped out, there should be menus in MB menubar,
  79. first of them named 'Project' and contain item 'NewCLI'. If not, something
  80. went wrong. In the requester is reason of the error. Error messages
  81. _should_ be 'understandable'.
  82.  
  83. Supposed that everything is OK, select that 'NewCLI' from 'Project' menu.
  84. NewCLI popped out? If not, there's no NewCLI command in your C: or
  85. you typed something wrong.
  86.  
  87. Those odd-looking characters in EOL are hotkey buttons! Try holding
  88. right shift and right alt and pressing 'n'.... NewCLI should pop out,
  89. just like selected from menu. The others are just for example, they won't work,
  90. because you have things in different directories than me.
  91. Just another hotkey: Press hotkey qualifiers and HELP to activate MB window.
  92.  
  93. Hotkey qualifiers may be one ore more of these:
  94. LSHIFT
  95. RSHIFT
  96. CAPS/CAPSLOCK
  97. CONTROL/CTRL
  98. LALT
  99. RALT
  100. LCOMMAND/LCMD/LAMIGA/LAMG
  101. RCOMMAND/RCMD/RAMIGA/RAMG
  102. Well, those should be enough. They may be typed either lower or upper case, or
  103. mixed. Between qualifiers may be used '!' '|' ',' or ' ', or... mixed!
  104. It's your choice.
  105.  
  106. SPECIAL HOTKEY THINGS!
  107. Try this:
  108. HOTKEY ralt!rshift!FRONT!INACTIVATE
  109. Looks cool, eh? Explanations:
  110. FRONT activating MB window by hotkey HELP causes WB to pop in front. If you're
  111. using HUGE screens and PopUpMenu/eqv. leave this off and use MB from anywhere
  112. you want without tumbeling with MB window. (That makes almost no sense, but
  113. it's 3 AM and I'm debugging this f*cking MB instead of sleeping)
  114. INACTIVATE after activating MB window by hotkey HELP and selecting something
  115. from MB menu causes the screen, which was active before, to be in front,
  116. and the window active before to be activated again.
  117. (If you know what that means, please write and explain it to me)
  118.  
  119. As hotkey buttons may be used a-z (NOTE: LOWER.. eh... lower case),
  120. 0-9 (not numeric pad), ,./;'][\=-`.
  121. F1-F10 not available (yet. Yes, this is f*cking lame thing, but to keep this
  122. program under 100 kB :) I passed them).
  123.  
  124. If no hotkey qualifier is given (no HOTKEY line in config),
  125. hotkeys are not active. If hotkey qualifier is given, HELP always activates
  126. MB window.
  127.  
  128. DRAG in config means, that MB window will be draggable. Yea, I should have
  129. included position-presetting in that thing, but I'm in hurry, tired and
  130. lazy. A note in finnish:
  131.  -Arsi! Tässä sinulle Draggaabeli ikkuna!
  132. DRAG will effect only when starting MB, not when updating. Laziness problem
  133. again...
  134.  
  135. Some things about configfile format:
  136. There has to be at least one space/tab between command and parameters.
  137. After 'ENDE' everything in the config is ignored, 'ENDE' MUST exist.
  138. (Yes, I'm a Finn, not German. That 'ENDE' is 'ENDE' instead of 'END' just
  139. because my routine handles only commands with at least 4 chars. Had to add
  140. that 'E' to make it work.....)
  141. Every command (ITEM, DISK etc) may be typed either lower or upper case,
  142. or mixed. Rest of the text is used as text in menus and to launch a program,
  143. they're not critical.
  144. I just tested MB a little. It should swallow anything without crashing.
  145. Now, typing this text, I've been using MB for about two weeks without
  146. problems.... or... well, there's been problems, but they've been caused by
  147. other programs. E.g. Protracker causes a Guru loop if started... that guru is
  148. explained later.
  149.  
  150. That was a brief example of a simple MB.config. Mine is about
  151. 4kB long, but I can launch almost any program in my HD from MB menu....
  152. except CLI commands :^).
  153.  
  154. ;--------
  155.  
  156. Next: Internal menu contents:
  157.  
  158. About:        Well, it's... about. If you wanna know my address...
  159. Update:        Re-reads config file, parses menus from it... the works.
  160.         Speedy, compared to MM.
  161. Mem relative:    Snap this on using RAmiga-M. If selected from menu, readings
  162.         won't be zeroes. Reason: When menus are drawn on screen, they
  163.         need memory. When that memory is released, readings will
  164.         change.
  165. Disk relative:    The same, but viewing disk free space. Useful=??????
  166. Write docs:    You've used it, haven't you?
  167. Quit:        Hmmm....
  168.  
  169.  
  170. Then: Window title bar contents:
  171. XXX:   10388    Disk name and free space in bytes. They could be
  172.         kilo/megabytes, but I want accuracy. Bytes is the Only
  173.         unit to show things like free (HD) space. Besides, I'm lazy
  174.         coding converting routines....
  175. T:3779112    Total free memory in bytes.
  176. L:2725408    Largest piece of memory.
  177. F:2891096    Free Fast mem.
  178. C: 887992    Free Chip mem.
  179. 22:07:42    clock
  180. Depth gadget    Hmmm....
  181.  
  182. ;--------------
  183.  
  184. By the way, I don't like program packages with about >1000 files.
  185. Program.exe, program.doc, program.data, program.P*SS, readme, readthose,
  186. readthat... That's why I crunched & included these docs in the executable.
  187. I... tttthink these docs will follow the program anywhere :^}.
  188.  
  189. ¡BUG REPORT! ¡BUG REPORT! ¡BUG REPORT! ¡BUG REPORT! ¡BUG REPORT! ¡BUG REPORT!
  190. (that line is piece of cake for LHA!)
  191.  
  192. After trying it, I couldn't make this program to create its own process and
  193. free CLI. So, you (still in 1990's) have to start it by
  194. 'run <NIL: >NIL: MenuBlaster [configfile]'. Lame.
  195.  
  196. Due to only 16 bit MULU instruction of MC68000, I had to create piece of code
  197. to get disk free space multiplied. You know, get Info on disk, you've to
  198. calculate [ID_NUMBLOCKS-ID_NUMBLOCKSUSED]*ID_BYTESPERBLOCK=free_space.
  199. If there's over 65535 blocks free, MULU.w is insufficient. But, due to
  200. that piece of code, in this program maximum is 4194303 blocks free.
  201. If there's 512 bytes per block, space is 2147483136 bytes, about 2GB.
  202. After that display goes '-1'. Try it sometimes :^)...... (I can't.)
  203.  
  204. >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^( >¦^(
  205. Items with hotkey may be selected from menu also by pressing RAMIGA-hotkey
  206. when MB window is active. Except that pressing e.g. RAMIGA-a pops up
  207. About, not your program. That bug just caused me headache.
  208. In gadget-structure there are gg_GadgetID(word) and gg_UserData(longword).
  209. That's six bytes.... beautiful.
  210. But, in menuitem-structure there's NOTHING! NOT A SINGLE BYTE USER TO USE AS
  211. (S)HE WANTS! I used mi_Command(2 bytes) for that. I just left COMMSEQ flag
  212. clear in mi_Flags, so, command key won't be shown.
  213. Tuff luck. Doesn't crash the program, anyway..... maybe..... Nooooo, it works
  214. just fine :^|
  215.  
  216. There's no way see hotkeys while MB is running. You just have to remember
  217. them :^( . Of course I could set COMMSEQ when item had Command. But, but....
  218. re-designing item creation routines.... headache.
  219. Besides, then hotkeys 'aumdwq' wouldn't be available.
  220.  
  221. When you have set both FRONT and INACTIVATE flags, you can see another bug.
  222. But, I'll let YOU to discover it.... there must be excitement in life.
  223.  
  224. If MB is started twice/more, there's two/more of them running.... lame, eh?
  225.  
  226. This program has been coded using 1.3 includes, because I CAN'T GET _WORKING_
  227. 2.0 INCLUDES ANYWHERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  228. Using 2.0 specials, this program would be about..... 8kB. Still, it's small
  229. compared to MM. This has 'docs' included and hotkeys. MB is about 1kB
  230. bigger than MM executable.
  231.  
  232. Sh*t happens. Proof: Sh*t just happened.
  233.  
  234. Then some (more) disgusting bugs:
  235. Intuition has been naughty! Intuition should be punished!
  236. You must be familiar of selecting multiple menu items at once holding down
  237. the menu button (=RMB) and selecting stuff by clicking select button (=LMB).
  238. Works in all other programmer's programs, BUT NOT IN MENUBLASTER!!!!!!!!!!!!!!!!!!!!!!!!!!!
  239. Intuition simply sends message about the first item and ignores the rest.
  240. Someone, tell me how to fix that! I've checked everything: WD_FLAGS,
  241. MU_FLAGS, MI_FLAGS. Beats me. Beats all my friends, too. Anyone, knowing
  242. how to solve this, send me a postcard.
  243. Another (OS) bug is a f*cking Guru. Includes explained it like this:
  244. "AN_MemoryInsane equ $0100000C ; Sanity check on memory list failed
  245. during AvailMem(MEMF_LARGEST)."
  246. If you get that guru, don't blame MB/me. I just tried to fix that, but I was
  247. p*ssed off about fixing OS bugs. I'm tired. I'm off. Try to survive.
  248.  
  249. -Version 1.1: Bug fixed (???). It'll still alert once, after that L: display
  250. says -1. Might work.... maybe. It just checks $100 for #$0100000c........
  251.  
  252. -Version 1.2: Fixed a hotkey bug, that trashed about every 30th hotkey signal
  253. from input.device kludge, so, pressing hotkey didn't effect at all.
  254.  
  255. ¡END OF BUG REPORT! ¡END OF BUG REPORT! ¡END OF BUG REPORT! ¡END OF BUG REPORT! 
  256.  
  257. Well, I'm about to crunch this cr*p. After all, I'm almost SICK of coding
  258. this. It's time to move on, I've several new program ideas, at least function
  259. generator and screensaver.
  260. Gotta go now, programs to code, donuts to kill. Bye!
  261.  
  262.             Signed 7.7.1993/1.1.1994    Archy
  263.  
  264.